﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AvaProvi
{
    [Serializable]
    public class clsZonaDeRiesgo_CRN:clsEstado, IControlEstados
    {

        public clsInmueble_CRN Inmueble { get; set; }
        public string IrregularidadElevacion { get; set; }
        public string IrregularidadPlanta { get; set; }
        public string TipoSuelo { get; set; }
        public string ZonasDeAfectacion { get; set; }
        public string ZonasInundables { get; set; }
        public string Restricciones { get; set; }

        
        public clsZonaDeRiesgo_CRN(clsInmueble_CRN objInmueble)
            : base()
        {
            this.Inmueble = objInmueble;
            this.IrregularidadElevacion = string.Empty;
            this.IrregularidadPlanta = string.Empty;
            this.TipoSuelo = string.Empty;
            this.ZonasDeAfectacion = string.Empty;
            this.ZonasInundables = string.Empty;
            this.Restricciones = string.Empty;
        }

        #region Metodos

        public bool Guardar()
        {
            if (this.DatosValidos())
            {
                if (this.EsNuevo)
                    return NuevaZonaDeRiesgo();
                else
                {
                    if (this.EsModificado)
                        return ModificaZonaDeRiesgo();
                    else
                        return EliminaZonaDeRiesgo();
                }
            }
            return false;
        }

        private bool EliminaZonaDeRiesgo()
        {
            clsZonaDeRiesgo_CD objZonaDeRiesgo_CD = new clsZonaDeRiesgo_CD();
            return objZonaDeRiesgo_CD.EliminaZonaDeRiesgo(this);
        }

        private bool ModificaZonaDeRiesgo()
        {
            clsZonaDeRiesgo_CD objZonaDeRiesgo_CD = new clsZonaDeRiesgo_CD();
            return objZonaDeRiesgo_CD.ModificaZonaDeRiesgo(this);
        }

        private bool NuevaZonaDeRiesgo()
        {
            clsZonaDeRiesgo_CD objZonaDeRiesgo_CD = new clsZonaDeRiesgo_CD();
            if (objZonaDeRiesgo_CD.CreaZonaDeRiesgo(this))
            {
                this.EsModificado = true;
                return true;
            }
            return false;
        }

        public bool DatosValidos()
        {
            return true;
        }

        public static clsZonaDeRiesgo_CRN RecuperaZonaDeRiesgo(clsInmueble_CRN objInmueble)
        { 
            clsZonaDeRiesgo_CRN objZonaDeRiesgo = new clsZonaDeRiesgo_CRN(objInmueble);
            clsZonaDeRiesgo_CD objZonaDeRiesgo_CD = new clsZonaDeRiesgo_CD();
            dsInmoviliario.ZonasDeRiesgoRow objZonaDeRiesgoRecuperada = objZonaDeRiesgo_CD.RecuperaZonaDeRiesgo(objInmueble.Avaluo.IdAvaluo);
            if (objZonaDeRiesgoRecuperada != null)
            {
                objZonaDeRiesgo.EsModificado = true;
                objZonaDeRiesgo.IrregularidadElevacion = objZonaDeRiesgoRecuperada.IrregularidadElevacion;
                objZonaDeRiesgo.IrregularidadPlanta = objZonaDeRiesgoRecuperada.IrregularidadPlanta;
                objZonaDeRiesgo.TipoSuelo = objZonaDeRiesgoRecuperada.TipoSuelo;
                objZonaDeRiesgo.ZonasDeAfectacion = objZonaDeRiesgoRecuperada.ZonasDeAfectacion;
                objZonaDeRiesgo.ZonasInundables = objZonaDeRiesgoRecuperada.AreasInundables;
                objZonaDeRiesgo.Restricciones = objZonaDeRiesgoRecuperada.Restricciones;
            }
            return objZonaDeRiesgo;
        }

        #endregion
    }
}
